package com.api.core.domain.query;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.api.common.utils.StringUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Getter
@Setter
public class ElementQuery {
    /**
     * 设备所属plc ID
     */
    private Long ipcId;
    /**
     *
     */
    @JsonIgnore
    private String ipcName;
    private JSONObject ipcNameLocales;
    @JsonIgnore
    private String strIpcLocales;
    /**
     * 设备所属产线ID
     */
    private Long lineId;
    /**
     * 产线名称
     */
    @JsonIgnore
    private String lineName;
    private JSONObject lineNameLocales;
    @JsonIgnore
    private String strLineNameLocales;
    /**
     * 设备ID
     */
    private Long robotId;
    /**
     * 设备名称
     */
    @JsonIgnore
    private String robotName;
    private JSONObject robotNameLocales;
    @JsonIgnore
    private String strRobotNameLocales;

    private Long elementId;
    @JsonIgnore
    private String elementName;
    private JSONObject elementNameLocales;
    @JsonIgnore
    private String strElementNameLocales;

    private String elementCode;
    /**
     * 设备传感器卡号 第几个卡号
     */
    private int ipcSlot;
    private Set<String> datColSet;
    private String strDatColSet;

    private List<Double> score;
    private Double ratio;
    /**
     * 描述
     */
    private String remark;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 创建人
     */
    private String createBy;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 更新人
     */
    private String updateBy;
    /**
     * 选择第N页
     */
    private int pageNum;
    /**
     * 每页显示量
     */
    private int pageSize;

    private String appLang;

    public void setStrIpcLocales(String strIpcLocales) {
        this.strIpcLocales = strIpcLocales;
        if (StringUtils.isNotBlank(strIpcLocales))
            this.ipcNameLocales = JSONObject.parse(strIpcLocales);
    }

    public void setStrLineNameLocales(String strLineNameLocales) {
        this.strLineNameLocales = strLineNameLocales;
        if (StringUtils.isNotBlank(strLineNameLocales))
            this.lineNameLocales = JSONObject.parse(strLineNameLocales);
    }

    public void setStrRobotNameLocales(String strRobotNameLocales) {
        this.strRobotNameLocales = strRobotNameLocales;
        if (StringUtils.isNotBlank(strRobotNameLocales))
            this.robotNameLocales = JSONObject.parse(strRobotNameLocales);
    }

    public void setStrElementNameLocales(String strElementNameLocales) {
        this.strElementNameLocales = strElementNameLocales;
        if (StringUtils.isNotBlank(strElementNameLocales))
            this.elementNameLocales = JSONObject.parse(strElementNameLocales);
    }


    public void setStrDatColSet(String strDatColSet) {
        this.strDatColSet = strDatColSet;
        if (StringUtils.isNotBlank(strDatColSet)) {
            List<String> ja = JSONArray.parseArray(strDatColSet).toList(String.class);
            this.datColSet = new HashSet<>(ja);
        } else {
            this.datColSet = null;
        }
    }

    public void setScore(String strScore) {
        if (StringUtils.isNotBlank(strScore)) {
            this.score = JSONArray.parseArray(strScore).toList(Double.class);
        }
    }

//    public void setScore(List<Double> score) {
//        this.score = score;
//    }
}
